In network computer systems, a plurality of client computers are typically connected together, and to one or more server computers in the network. A network may be established through the hard-wired interconnection of a plurality of clients and servers in a local network, or on a wider scale such as an intranet, or the Internet or World Wide Web, which may include telecommunication links. In any case, the clients and servers may act as central control units for providing access to files, programs, and program execution to the individual computers connected within the network.
Each computer (i.e. each client machine and each server machine) has a unique address, referred to as the machine's Internet address, or IP address. These terms are often used interchangeably. Note that TCP/IP (Transmission Control Protocol over Internet Protocol) is both a transport layer and a network layer protocol developed for networking systems. A machine's Internet address (i.e. IP address) is a 32-bit address defined by the Internet Protocol, and is typically expressed in dot notation (e.g., 123.456.7.8).
In the interest of being user-friendly, network systems usually allow clients to access other clients and servers through the use of alphanumeric names. The World Wide Web is one example of a system in which clients use alphanumeric names to reach other machines, such as Web servers. The World Wide Web is the Internet's multimedia information retrieval system. In the Web environment, client machines communicate with Web servers using the Hypertext Transfer Protocol (HTTP). HTTP is an application protocol providing users access to files (e.g., text, graphics, images, animation, sound, video, etc.) using a standard page description language known as Hypertext Markup Language (HTML). HTML provides basic document formatting and allows a developer to specify links to other computers and files.
In the Internet paradigm, a network path to a server is identified by a Uniform Resource Locator (URL) having a specified syntax for defining a network connection. Use of an HTML-compatible browser (e.g., Netscape Navigator or Microsoft Internet Explorer) at a client machine involves specification of a link via the URL. In response, the client makes a request to the server identified in the link and receives in return a document formatted according to HTML.
One example of a URL is http://www.ibm.com. In this example, "http" refers to the Hypertext Transfer Protocol discussed above. Following the two slashes is "www.ibm.com" which is the fully qualified domain name of a server. Another example of a URL is http://www.ibm.com/stories/story1.html. In this example, "/stories/story1.htm1" is a pathname, which leads to a particular file on the "www.ibm.com" server.
In order for a client to be connected with a desired machine, the alphanumeric computer name (i.e. domain name) used by the client must be converted, or translated, to the machine's Internet address. One prior art method for converting a computer name to an Internet address is the use of a table, such as the /etc/hosts file used on UNIX systems (UNIX is a registered trademark of the Open Group in the United States and other countries). However, because network systems change rapidly, static tables are often out of date.
Another method used for converting a computer name to an Internet address is the use of a name server. A name server is a server which is available to all clients on the network. The purpose of a name server is to translate, or convert, computer names to Internet addresses. A name server is kept up to date with the latest information regarding all machines on the network. However, there are several problems associated with the use of name servers. If a name server is very busy or has gone off line for some reason, then a client trying to reach a particular machine will be prevented from connecting with that machine (unless the user knows the machine's Internet address, which is unlikely). It is possible to configure a client machine so that it uses a static table (e.g., /etc/hosts) if the name server does not respond. However, as discussed above, static tables may quickly become out of date.
Another problem with the use of name servers is that it takes time, especially when the name server is very busy, to obtain an Internet address from the name server. Some name servers are made up of a hierarchy of name servers. Thus, if a first name server does not find an address for a particular computer name, the name is sent to a second name server, and so on. Each upward search takes additional time. Further, clients tend to connect to the same machine many times. However, each time a client connects to a machine, even if the client has recently connected to the same machine, the client must go through the name server and obtain a computer name to Internet address conversion.
Consequently, it would be desirable to have a system and method for quickly obtaining an Internet address for a machine. It would also be desirable to be able to obtain an Internet address for a machine even when the name server is off line.